﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using HMS_Hospital_Team2._6.DO;
using System.Collections;


namespace HMS_Hospital_Team2._6.DA
{
    class HoaDonDA
    {
        HMSHospitalEntities context = new HMSHospitalEntities();
        PubicLibDA pubTT = new PubicLibDA();
        // Hàm load data lên combobox Loại DV
        public DataTable LoadthongtinNhomDV_DA()
        {
            var NhomDV = from ndv in context.NhomDichVus
                         where ndv.MaNhomDV != "TN" && ndv.MaNhomDV != "TQ"
                         select new
                         {
                             ndv.TenNhomDV,
                             ndv.MaNhomDV
                         };
            return pubTT.LinqToDataTable(NhomDV);
        }
        // Hàm load data lên combobox Dịch vụ
        public DataTable LoadthongtinDV_DA(string smanhomdv)
        {

            var Dichvu = from dv in context.DichVus
                         where dv.MaNhomDV == smanhomdv
                         select new
                         {
                             dv.TenDichVu,
                             dv.MaDichVu,
                         };
            return pubTT.LinqToDataTable(Dichvu);
        }
        // Hàm load data lên girdview 
        public DataTable ThemDichVu_DA(string smaDV)
        {
            var dichvu = from dv in context.DichVus
                         where dv.MaDichVu == smaDV
                         select new
                         {
                             dv.MaDichVu,
                             dv.TenDichVu,
                             dv.GiaDichVu,
                             dv.MaNhomDV
                         };
            return pubTT.LinqToDataTable(dichvu);
        }
        //Hàm load hóa đơn
        public DataTable LoadHDchuathu_DA(string sMaban)
        {
            var Hoadon = from hd in context.HoaDons
                         where hd.MaBan == sMaban && hd.TrangThai == false
                         select new
                         {
                             hd.MaHoaDon,
                             hd.MaBenhNhan,
                             hd.NgayTao
                         };
            return pubTT.LinqToDataTable(Hoadon);
        }
        // Hàm load hóa đơn đã thu
        public DataTable LoadHDdathu_DA(string sMaban)
        {
            var Hoadon = from hd in context.HoaDons
                         where hd.MaBan == sMaban && hd.TrangThai == true
                         select new
                         {
                             hd.MaHoaDon,
                             hd.MaBenhNhan,
                             hd.NgayTao
                         };
            return pubTT.LinqToDataTable(Hoadon);
        }

        public static List<BenhNhanDO> LaydshdBN_DA(string sMaban)
        {
            List<BenhNhanDO> dshdbn = new List<BenhNhanDO>();
            using (HMSHospitalEntities context = new HMSHospitalEntities())
            {
                ArrayList ArrNhanVien = new ArrayList();
                var dsHDBN = from dshd in context.HoaDons
                             where dshd.MaBan == sMaban && dshd.TrangThai == false
                             select dshd;
                
                foreach (var row in dsHDBN)
                {
                    BenhNhanDO benhnhan = new BenhNhanDO();
                    benhnhan.SMaBenhNhan = row.MaBenhNhan;
                    benhnhan.HoBenhNhan = DA.BenhNhanDA.LayhoBN_DA(row.MaBenhNhan);
                    benhnhan.TenBenhNhan = DA.BenhNhanDA.LaytenBN_DA(row.MaBenhNhan);
                    if (ArrNhanVien.Contains(row.MaBenhNhan))
                    {
                    }
                    else
                    {
                        ArrNhanVien.Add(row.MaBenhNhan);
                        dshdbn.Add(benhnhan);  
                    } 
                }
                 
            }
            return dshdbn;
        }



        public DataTable LoaddsHoaDon_DA(string smaBN)
        {
            var Hoadon = from hd in context.HoaDons
                         where hd.MaBenhNhan == smaBN && hd.TrangThai == false
                         select new
                         {
                             hd.MaHoaDon,
                             hd.NhomDichVu.TenNhomDV,
                             hd.TongPhiDV,
                             hd.TrangThai
                         };
            return pubTT.LinqToDataTable(Hoadon);
        }

        //Ham xac nhan thu tien
        public static void Xacnhanthutien_DA(string sMahoadon, string sMaNguoiThu,bool blTrangThai)
        {
            using (HMSHospitalEntities context = new HMSHospitalEntities())
            {
                var xacnhanthutien = (from xnhd in context.HoaDons
                                      where xnhd.MaHoaDon == sMahoadon
                                      select xnhd).First();
                xacnhanthutien.MaNguoiThu = sMaNguoiThu;
                xacnhanthutien.TrangThai = blTrangThai;

                context.SaveChanges();
            }
        }
        // Hàm cập nhật trạng thái chọn trả
        public static void CapnhattrangthaiDV_DA(string sMaDV, string sMahoadon, bool bltrangthai)
        {
            using (HMSHospitalEntities context = new HMSHospitalEntities())
            {
                var capnhattt = (from cntt in context.ChiTietHoaDons
                                 where cntt.MaDichVu == sMaDV && cntt.MaHoaDon == sMahoadon
                                 select cntt).First();
                capnhattt.ChonTra = bltrangthai;

                context.SaveChanges();
            }
        }
        // Hàm lấy danh sách nhân viên nhập liệu
        public static List<NhanVienDO> LaydanhsachNVNL_DA()
        {
            List<NhanVienDO> dsNVNL = new List<NhanVienDO>();
            using (HMSHospitalEntities context = new HMSHospitalEntities())
            {
                ArrayList ArrNhanVien = new ArrayList();
                var NVNL = from nvnl in context.HoaDons
                           select nvnl;

                foreach (var row in NVNL)
                {
                    NhanVienDO nhanvien = new NhanVienDO();
                    nhanvien.MaNhanVien = row.MaNguoiTao;
                    nhanvien.HoVaTen = DA.NhanVienDA.Laytennhanvien_DA(row.MaNguoiTao);

                    if (ArrNhanVien.Contains(row.MaNguoiTao))
                    {

                    }
                    else
                    {
                        dsNVNL.Add(nhanvien);
                        ArrNhanVien.Add(row.MaNguoiTao);
                    }
                }
                NhanVienDO nv = new NhanVienDO();
                nv.HoVaTen = "Tất cả";
                nv.MaNhanVien = "all";
                dsNVNL.Add(nv);

            }
            return dsNVNL;
        }
        // Hàm lấy danh sách nhân viên thu tiền
        public static List<NhanVienDO> LaydanhsachNVTT_DA()
        {
            List<NhanVienDO> dsNVTT = new List<NhanVienDO>();
            using (HMSHospitalEntities context = new HMSHospitalEntities())
            {
                ArrayList ArrNhanVien = new ArrayList();
                var NVTT = from nvtt in context.HoaDons
                           where nvtt.MaNguoiThu != null
                           select nvtt;

                foreach (var row in NVTT)
                {
                    NhanVienDO nhanvien = new NhanVienDO();
                    nhanvien.MaNhanVien = row.MaNguoiThu;
                    nhanvien.HoVaTen = DA.NhanVienDA.Laytennhanvien_DA(row.MaNguoiThu);

                    if (ArrNhanVien.Contains(row.MaNguoiThu))
                    {

                    }
                    else
                    {
                        dsNVTT.Add(nhanvien);
                        ArrNhanVien.Add(row.MaNguoiThu);
                    }
                }
                NhanVienDO nv = new NhanVienDO();
                nv.HoVaTen = "Tất cả";
                nv.MaNhanVien = "all";
                dsNVTT.Add(nv);
            }
            return dsNVTT;
        }
        /*
         *  ------------CHỨC NĂNG THÔNG KÊ DOANH THU---------------
         * */
        /*
         * NHÓM DỊCH VỤ
         * */
        // Hàm load data lên gridcontrol Thống kê doanh thu theo NGÀY (Nhóm dịch vụ)
        public DataTable ThongkedoanhthuNhomDV_Ngay_DA(int day, int month, int year, string madv)
        {
            var ThongkeNgay = from tkn in context.HoaDons
                              where tkn.NgayTao.Day == day && tkn.NgayTao.Month == month && tkn.NgayTao.Year == year && tkn.MaNhomDV == madv
                              select new
                              {
                                  // tkn.MaHoaDon,
                                  tkn.NgayTao,
                                  tkn.NhomDichVu.TenNhomDV,
                                  tkn.TongPhiDV
                                  //tkn.BenhNhan.TenBenhNhan,
                                  //tkn.NhanVien.HoVaTen
                              };
            return pubTT.LinqToDataTable(ThongkeNgay);
        }
        // Hàm load data lên gridcontrol Thống kê doanh thu theo THÁNG (Nhóm dịch vụ)
        public DataTable ThongkedoanhthuNhomDV_Thang_DA(int month, string madv,int iyear)
        {
            var ThongkeThang = from tkt in context.HoaDons
                               where tkt.NgayTao.Month == month && tkt.MaNhomDV == madv && tkt.NgayTao.Year == iyear
                               select new
                               {
                                   //tkt.MaHoaDon,
                                   tkt.NgayTao,
                                   tkt.NhomDichVu.TenNhomDV,
                                   tkt.TongPhiDV
                                   //tkt.BenhNhan.TenBenhNhan,
                                   //tkt.NhanVien.HoVaTen
                               };
            return pubTT.LinqToDataTable(ThongkeThang);
        }
        // Hàm load data lên gridcontrol Thống kê doanh thu theo KHOẢNG NGÀY (Nhóm dịch vụ)
        public DataTable ThongkedoanhthuNhomDV_KhoangNgay_DA(int DayFromDay, int DayFromMonth, int DayFromYear, int DayToDay, int DayToMonth, int DayToYear, string madv)
        {
            var ThongkeKhoangNgay = from tkkn in context.HoaDons
                                    where ((tkkn.NgayTao.Day >= DayFromDay && tkkn.NgayTao.Month >= DayFromMonth && tkkn.NgayTao.Year >= DayFromYear) && (tkkn.NgayTao.Day <= DayToDay && tkkn.NgayTao.Month <= DayToMonth && tkkn.NgayTao.Year <= DayToYear) && tkkn.MaNhomDV == madv)
                                    select new
                                    {
                                        //tkkn.MaHoaDon,
                                        tkkn.NgayTao,
                                        tkkn.NhomDichVu.TenNhomDV,
                                        tkkn.TongPhiDV
                                        //tkkn.BenhNhan.TenBenhNhan,
                                        //tkkn.NhanVien.HoVaTen
                                    };
            return pubTT.LinqToDataTable(ThongkeKhoangNgay);
        }
        /*
         * ĐƠN VỊ THU NGÂN
         * */
        // Hàm load data lên gridcontrol Thống kê doanh thu theo NGÀY (Đơn vị thu ngân)
        public DataTable ThongkedoanhthuDonvitn_Ngay_DA(int day, int month, int year, string madv)
        {
            var ThongkeNgay = from tkn in context.HoaDons
                              where tkn.NgayTao.Day == day && tkn.NgayTao.Month == month && tkn.NgayTao.Year == year && (tkn.MaPhongBan == madv)

                              select new
                              {
                                  // tkn.MaHoaDon,
                                  tkn.NgayTao,
                                  tkn.PhongBan.TenPhongBan,
                                  tkn.TongPhiDV
                                  //tkn.BenhNhan.TenBenhNhan,
                                  //tkn.NhanVien.HoVaTen
                              };
            return pubTT.LinqToDataTable(ThongkeNgay);
        }
        // Hàm load data lên gridcontrol Thống kê doanh thu theo THÁNG (Đơn vị thu ngân)
        public DataTable ThongkedoanhthuDonvitn_Thang_DA(int month, string madv,int iyear)
        {
            var ThongkeThang = from tkt in context.HoaDons
                               where tkt.NgayTao.Month == month && tkt.MaPhongBan == madv && tkt.NgayTao.Year == iyear
                               select new
                               {
                                   //tkt.MaHoaDon,
                                   tkt.NgayTao,
                                   tkt.PhongBan.TenPhongBan,
                                   tkt.TongPhiDV
                                   //tkt.BenhNhan.TenBenhNhan,
                                   //tkt.NhanVien.HoVaTen
                               };
            return pubTT.LinqToDataTable(ThongkeThang);
        }
        // Hàm load data lên gridcontrol Thống kê doanh thu theo KHOẢNG NGÀY (Đơn vị thu ngân)
        public DataTable ThongkedoanhthuDonvitn_KhoangNgay_DA(int DayFromDay, int DayFromMonth, int DayFromYear, int DayToDay, int DayToMonth, int DayToYear, string madv)
        {
            var ThongkeKhoangNgay = from tkkn in context.HoaDons
                                    where ((tkkn.NgayTao.Day >= DayFromDay && tkkn.NgayTao.Month >= DayFromMonth && tkkn.NgayTao.Year >= DayFromYear) && (tkkn.NgayTao.Day <= DayToDay && tkkn.NgayTao.Month <= DayToMonth && tkkn.NgayTao.Year <= DayToYear) && (tkkn.MaPhongBan == madv)
                                    )
                                    select new
                                    {
                                        //tkkn.MaHoaDon,
                                        tkkn.NgayTao,
                                        tkkn.PhongBan.TenPhongBan,
                                        tkkn.TongPhiDV
                                        //tkkn.BenhNhan.TenBenhNhan,
                                        //tkkn.NhanVien.HoVaTen
                                    };
            return pubTT.LinqToDataTable(ThongkeKhoangNgay);
        }
        /*
         * TẤT CẢ CỦA ĐƠN VỊ THU NGÂN
         * */
        // Hàm load data lên gridcontrol Thống kê doanh thu theo NGÀY (Tất cả)
        public DataTable ThongkedoanhthuTatca_Ngay_DA(int day, int month, int year)
        {
            var ThongkeNgay = from tkn in context.HoaDons
                              where tkn.NgayTao.Day == day && tkn.NgayTao.Month == month && tkn.NgayTao.Year == year

                              select new
                              {
                                  // tkn.MaHoaDon,
                                  tkn.NgayTao,
                                  tkn.PhongBan.TenPhongBan,
                                  tkn.TongPhiDV
                                  //tkn.BenhNhan.TenBenhNhan,
                                  //tkn.NhanVien.HoVaTen
                              };
            return pubTT.LinqToDataTable(ThongkeNgay);
        }
        // Hàm load data lên gridcontrol Thống kê doanh thu theo THÁNG (Tất cả)
        public DataTable ThongkedoanhthuTatca_Thang_DA(int month,int iyear)
        {
            var ThongkeThang = from tkt in context.HoaDons
                               where tkt.NgayTao.Month == month && tkt.NgayTao.Year == iyear
                               select new
                               {
                                   //tkt.MaHoaDon,
                                   tkt.NgayTao,
                                   tkt.PhongBan.TenPhongBan,
                                   tkt.TongPhiDV
                                   //tkt.BenhNhan.TenBenhNhan,
                                   //tkt.NhanVien.HoVaTen
                               };
            return pubTT.LinqToDataTable(ThongkeThang);
        }
        // Hàm load data lên gridcontrol Thống kê doanh thu theo KHOẢNG NGÀY (Tất cả)
        public DataTable ThongkedoanhthuTatca_KhoangNgay_DA(int DayFromDay, int DayFromMonth, int DayFromYear, int DayToDay, int DayToMonth, int DayToYear)
        {
            var ThongkeKhoangNgay = from tkkn in context.HoaDons
                                    where ((tkkn.NgayTao.Day >= DayFromDay && tkkn.NgayTao.Month >= DayFromMonth && tkkn.NgayTao.Year >= DayFromYear) && (tkkn.NgayTao.Day <= DayToDay && tkkn.NgayTao.Month <= DayToMonth && tkkn.NgayTao.Year <= DayToYear))
                                    select new
                                    {
                                        //tkkn.MaHoaDon,
                                        tkkn.NgayTao,
                                        tkkn.PhongBan.TenPhongBan,
                                        tkkn.TongPhiDV
                                        //tkkn.BenhNhan.TenBenhNhan,
                                        //tkkn.NhanVien.HoVaTen
                                    };
            return pubTT.LinqToDataTable(ThongkeKhoangNgay);
        }
        /*
         * -----------------CHỨC NĂNG BÁO CÁO BIÊN LAI-------------
         * */
        /*
         * NHÂN VIÊN NHẬP LIỆU
         * */
        // Hàm load data lên gridcontrol Báo cáo biên lai theo NGÀY(Nhân viên nhập liệu)
        public DataTable BaocaobienlaiNVnl_Ngay_DA(int day, int month, int year, string smanv)
        {
            var BaocaoNgay = from bcn in context.HoaDons
                             where bcn.NgayTao.Day == day && bcn.NgayTao.Month == month && bcn.NgayTao.Year == year && bcn.MaNguoiTao == smanv
                             select new
                             {
                                 bcn.MaHoaDon,
                                 bcn.NgayTao,
                                 bcn.NhomDichVu.TenNhomDV,
                                 bcn.TongPhiDV,
                                 bcn.BenhNhan.TenBenhNhan,
                                 bcn.NhanVien.HoVaTen,
                                 bcn.Tuoi,
                                 bcn.GioiTinh,
                                 bcn.BenhNhan.HoBenhNhan
                             };
            return pubTT.LinqToDataTable(BaocaoNgay);
        }
        // Hàm load data lên gridcontrol Báo cáo biên lai theo THÁNG(Nhân viên nhập liệu)
        public DataTable BaocaobienlaiNVnl_Thang_DA(int month, string smanv,int iyear)
        {
            var BaocaoThang = from bct in context.HoaDons
                              where bct.NgayTao.Month == month && bct.MaNguoiTao == smanv && bct.NgayTao.Year == iyear
                              select new
                              {
                                  bct.MaHoaDon,
                                  bct.NgayTao,
                                  bct.NhomDichVu.TenNhomDV,
                                  bct.TongPhiDV,
                                  bct.BenhNhan.TenBenhNhan,
                                  bct.NhanVien.HoVaTen,
                                  bct.Tuoi,
                                  bct.GioiTinh,
                                  bct.BenhNhan.HoBenhNhan
                              };
            return pubTT.LinqToDataTable(BaocaoThang);
        }
        // Hàm load data lên gridcontrol Báo cáo biên lai theo KHOẢNG NGÀY(Nhân viên nhập liệu)
        public DataTable BaocaobienlaiNVnl_KhoangNgay_DA(int DayFromDay, int DayFromMonth, int DayFromYear, int DayToDay, int DayToMonth, int DayToYear, string smanv)
        {
            var BaocaoKhoangNgay = from bckn in context.HoaDons
                                   where ((bckn.NgayTao.Day >= DayFromDay && bckn.NgayTao.Month >= DayFromMonth && bckn.NgayTao.Year >= DayFromYear) && (bckn.NgayTao.Day <= DayToDay && bckn.NgayTao.Month <= DayToMonth && bckn.NgayTao.Year <= DayToYear) && bckn.MaNguoiTao == smanv)
                                   select new
                                   {
                                       bckn.MaHoaDon,
                                       bckn.NgayTao,
                                       bckn.NhomDichVu.TenNhomDV,
                                       bckn.TongPhiDV,
                                       bckn.BenhNhan.TenBenhNhan,
                                       bckn.NhanVien.HoVaTen,
                                       bckn.Tuoi,
                                       bckn.GioiTinh,
                                       bckn.BenhNhan.HoBenhNhan
                                   };
            return pubTT.LinqToDataTable(BaocaoKhoangNgay);
        }
        /*
         * NHÂN VIÊN THU TIỀN
         * */
        // Hàm load data lên gridcontrol Báo cáo biên lai theo NVTT theo NGÀY (Nhân viên thu tiền)
        public DataTable BaocaobienlaiNVtt_Ngay_DA(int day, int month, int year, string smanv)
        {
            var BaocaoNgaynvtt = from bcn in context.HoaDons
                                 where bcn.NgayTao.Day == day && bcn.NgayTao.Month == month && bcn.NgayTao.Year == year && bcn.MaNguoiThu != null && bcn.MaNguoiThu == smanv
                                 select new
                                 {
                                     bcn.MaHoaDon,
                                     bcn.NgayTao,
                                     bcn.NhomDichVu.TenNhomDV,
                                     bcn.TongPhiDV,
                                     bcn.BenhNhan.TenBenhNhan,
                                     bcn.NhanVien1.HoVaTen,
                                     bcn.Tuoi,
                                     bcn.GioiTinh,
                                     bcn.BenhNhan.HoBenhNhan
                                 };
            return pubTT.LinqToDataTable(BaocaoNgaynvtt);
        }
        // Hàm load data lên gridcontrol Báo cáo biên lai theo NVTT theo THÁNG(Nhân viên thu tiền)
        public DataTable BaocaobienlaiNVtt_Thang_DA(int month, string smanv,int iyear)
        {
            var BaocaoThangnvtt = from bct in context.HoaDons
                                  where bct.NgayTao.Month == month && bct.MaNguoiThu != null && bct.MaNguoiThu == smanv && bct.NgayTao.Year == iyear
                                  select new
                                  {
                                      bct.MaHoaDon,
                                      bct.NgayTao,
                                      bct.NhomDichVu.TenNhomDV,
                                      bct.TongPhiDV,
                                      bct.BenhNhan.TenBenhNhan,
                                      bct.NhanVien1.HoVaTen,
                                      bct.Tuoi,
                                      bct.GioiTinh,
                                      bct.BenhNhan.HoBenhNhan
                                  };
            return pubTT.LinqToDataTable(BaocaoThangnvtt);
        }
        // Hàm load data lên gridcontrol Báo cáo biên lai theo NVTT theo KHOẢNG NGÀY (Nhân viên thu tiền)
        public DataTable BaocaobienlaiNVtt_KhoangNgay_DA(int DayFromDay, int DayFromMonth, int DayFromYear, int DayToDay, int DayToMonth, int DayToYear, string smanv)
        {
            var BaocaoKhoangNgaynvtt = from bckn in context.HoaDons
                                       where ((bckn.NgayTao.Day >= DayFromDay && bckn.NgayTao.Month >= DayFromMonth && bckn.NgayTao.Year >= DayFromYear) && (bckn.NgayTao.Day <= DayToDay && bckn.NgayTao.Month <= DayToMonth && bckn.NgayTao.Year <= DayToYear) && bckn.MaNguoiThu != null && bckn.MaNguoiThu == smanv)
                                       select new
                                       {
                                           bckn.MaHoaDon,
                                           bckn.NgayTao,
                                           bckn.NhomDichVu.TenNhomDV,
                                           bckn.TongPhiDV,
                                           bckn.BenhNhan.TenBenhNhan,
                                           bckn.NhanVien1.HoVaTen,
                                           bckn.Tuoi,
                                           bckn.GioiTinh,
                                           bckn.BenhNhan.HoBenhNhan
                                       };
            return pubTT.LinqToDataTable(BaocaoKhoangNgaynvtt);
        }
        /*
         * TẤT CẢ THEO 2 NHÂN VIÊN
         * */
        //---------THEO NHÂN VIÊN NHẬP LIỆU -------------- 
        // Hàm load data lên gridcontrol Báo cáo biên lai theo NGÀY (Tất cả)
        public DataTable BaocaobienlaitatcaNL_Ngay_DA(int day, int month, int year)
        {
            var tatca = from bctc in context.HoaDons
                        where bctc.NgayTao.Day == day && bctc.NgayTao.Month == month && bctc.NgayTao.Year == year
                        select new
                        {
                            bctc.MaHoaDon,
                            bctc.NgayTao,
                            bctc.NhomDichVu.TenNhomDV,
                            bctc.TongPhiDV,
                            bctc.BenhNhan.TenBenhNhan,
                            bctc.NhanVien.HoVaTen,
                            bctc.Tuoi,
                            bctc.GioiTinh,
                            bctc.BenhNhan.HoBenhNhan
                        };
            return pubTT.LinqToDataTable(tatca);
        }
        // Hàm load data lên gridcontrol Báo cáo biên lai theo THÁNG (Tất cả)
        public DataTable BaocaobienlaitatcaNL_Thang_DA(int month)
        {
            var tatca = from bctc in context.HoaDons
                        where bctc.NgayTao.Month == month
                        select new
                        {
                            bctc.MaHoaDon,
                            bctc.NgayTao,
                            bctc.NhomDichVu.TenNhomDV,
                            bctc.TongPhiDV,
                            bctc.BenhNhan.TenBenhNhan,
                            bctc.NhanVien.HoVaTen,
                            bctc.Tuoi,
                            bctc.GioiTinh,
                            bctc.BenhNhan.HoBenhNhan
                        };
            return pubTT.LinqToDataTable(tatca);
        }
        // Hàm load data lên gridcontrol Báo cáo biên lai theo KHOẢNG NGÀY(Tất cả)
        public DataTable BaocaobienlaitatcaNL_KhoangNgay_DA(int DayFromDay, int DayFromMonth, int DayFromYear, int DayToDay, int DayToMonth, int DayToYear)
        {
            var tatca = from bctc in context.HoaDons
                        where ((bctc.NgayTao.Day >= DayFromDay && bctc.NgayTao.Month >= DayFromMonth && bctc.NgayTao.Year >= DayFromYear) && (bctc.NgayTao.Day <= DayToDay && bctc.NgayTao.Month <= DayToMonth && bctc.NgayTao.Year <= DayToYear))
                        select new
                        {
                            bctc.MaHoaDon,
                            bctc.NgayTao,
                            bctc.NhomDichVu.TenNhomDV,
                            bctc.TongPhiDV,
                            bctc.BenhNhan.TenBenhNhan,
                            bctc.NhanVien.HoVaTen,
                            bctc.Tuoi,
                            bctc.GioiTinh,
                            bctc.BenhNhan.HoBenhNhan
                        };
            return pubTT.LinqToDataTable(tatca);
        }
        // -------------- THEO NHÂN VIÊN THU TIỀN ----------
        public DataTable BaocaobienlaitatcaTT_Ngay_DA(int day, int month, int year)
        {
            var tatca = from bctc in context.HoaDons
                        where bctc.NgayTao.Day == day && bctc.NgayTao.Month == month && bctc.NgayTao.Year == year && bctc.TrangThai == true
                        select new
                        {
                            bctc.MaHoaDon,
                            bctc.NgayTao,
                            bctc.NhomDichVu.TenNhomDV,
                            bctc.TongPhiDV,
                            bctc.BenhNhan.TenBenhNhan,
                            bctc.NhanVien1.HoVaTen,
                            bctc.Tuoi,
                            bctc.GioiTinh,
                            bctc.BenhNhan.HoBenhNhan
                        };
            return pubTT.LinqToDataTable(tatca);
        }
        // Hàm load data lên gridcontrol Báo cáo biên lai theo THÁNG (Tất cả)
        public DataTable BaocaobienlaitatcaTT_Thang_DA(int month,int iyear)
        {
            var tatca = from bctc in context.HoaDons
                        where bctc.NgayTao.Month == month && bctc.TrangThai == true && bctc.NgayTao.Year == iyear
                        select new
                        {
                            bctc.MaHoaDon,
                            bctc.NgayTao,
                            bctc.NhomDichVu.TenNhomDV,
                            bctc.TongPhiDV,
                            bctc.BenhNhan.TenBenhNhan,
                            bctc.NhanVien1.HoVaTen,
                            bctc.Tuoi,
                            bctc.GioiTinh,
                            bctc.BenhNhan.HoBenhNhan
                        };
            return pubTT.LinqToDataTable(tatca);
        }
        // Hàm load data lên gridcontrol Báo cáo biên lai theo THÁNG (Tất cả)
        public DataTable BaocaobienlaitatcaTT_KhoangNgay_DA(int DayFromDay, int DayFromMonth, int DayFromYear, int DayToDay, int DayToMonth, int DayToYear)
        {
            var tatca = from bctc in context.HoaDons
                        where ((bctc.NgayTao.Day >= DayFromDay && bctc.NgayTao.Month >= DayFromMonth && bctc.NgayTao.Year >= DayFromYear) && (bctc.NgayTao.Day <= DayToDay && bctc.NgayTao.Month <= DayToMonth && bctc.NgayTao.Year <= DayToYear) && bctc.TrangThai == true)
                        select new
                        {
                            bctc.MaHoaDon,
                            bctc.NgayTao,
                            bctc.NhomDichVu.TenNhomDV,
                            bctc.TongPhiDV,
                            bctc.BenhNhan.TenBenhNhan,
                            bctc.NhanVien1.HoVaTen,
                            bctc.Tuoi,
                            bctc.GioiTinh,
                            bctc.BenhNhan.HoBenhNhan
                        };
            return pubTT.LinqToDataTable(tatca);
        }
        // Hàm load data lên comboboxx
        public DataTable LoadthongtinNVNL_DA()
        {

            var nhanvien = from nv in context.NhanViens
                           select new
                           {
                               nv.HoVaTen,
                               nv.MaNhanVien
                           };
            return pubTT.LinqToDataTable(nhanvien);
        }
        /*
            * CHỨC NĂNG BÁO CÁO DANH SÁCH THU TIỀN
            * */
        /*
         *NHÓM DỊCH VỤ
         * */
        // Hàm load data lên gridcontrol Báo cáo danh sách thu tiền theo NGÀY (Nhóm dịch vụ)
        public DataTable BaocaodanhsachthutienNhomDV_Ngay_DA(int day, int month, int year, string madv)
        {
            var Baocaodanhsachthutien = from bcn in context.HoaDons
                                        where bcn.NgayTao.Day == day && bcn.NgayTao.Month == month && bcn.NgayTao.Year == year && bcn.MaNhomDV == madv
                                        select new
                                        {
                                            bcn.MaHoaDon,
                                            bcn.NgayTao,
                                            bcn.NhomDichVu.TenNhomDV,
                                            bcn.TongPhiDV,
                                            bcn.BenhNhan.TenBenhNhan,
                                            bcn.NhanVien.HoVaTen,
                                            bcn.Tuoi,
                                            bcn.GioiTinh,
                                            bcn.BenhNhan.HoBenhNhan
                                        };
            return pubTT.LinqToDataTable(Baocaodanhsachthutien);
        }
        /*
         * ĐƠN VỊ THU NGÂN
         * */
        // Hàm load data lên gridcontrol Báo cáo danh sách thu tiền  theo NGÀY (Đơn vị thu ngân)
        public DataTable BaocaodanhsachthutiennDonVitn_Ngay_DA(int day, int month, int year, string madonvi)
        {
            var Baocaodanhsachthutien = from bcn in context.HoaDons
                                        where bcn.NgayTao.Day == day && bcn.NgayTao.Month == month && bcn.NgayTao.Year == year && bcn.MaPhongBan == madonvi
                                        select new
                                        {
                                            bcn.MaHoaDon,
                                            bcn.NgayTao,
                                            bcn.PhongBan.TenPhongBan,
                                            bcn.TongPhiDV,
                                            bcn.BenhNhan.TenBenhNhan,
                                            bcn.NhanVien.HoVaTen,
                                            bcn.Tuoi,
                                            bcn.GioiTinh,
                                            bcn.BenhNhan.HoBenhNhan
                                        };
            return pubTT.LinqToDataTable(Baocaodanhsachthutien);
        }

        // Hàm load data lên gridcontrol Báo cáo danh sách thu tiền theo NGÀY (Tất cả theo đơn vị thu ngân)
        public DataTable BaocaodanhsachthutienntatcaDonVitn_Ngay_DA(int day, int month, int year)
        {
            var Baocaodanhsachthutien = from bcn in context.HoaDons
                                        where bcn.NgayTao.Day == day && bcn.NgayTao.Month == month && bcn.NgayTao.Year == year
                                        select new
                                        {
                                            bcn.MaHoaDon,
                                            bcn.NgayTao,
                                            bcn.PhongBan.TenPhongBan,
                                            bcn.TongPhiDV,
                                            bcn.BenhNhan.TenBenhNhan,
                                            bcn.NhanVien.HoVaTen,
                                            bcn.Tuoi,
                                            bcn.GioiTinh,
                                            bcn.BenhNhan.HoBenhNhan
                                        };
            return pubTT.LinqToDataTable(Baocaodanhsachthutien);
        }
    }
}